package homework.day05;

import java.io.*;

/**
 * 扫描指定目录中的所有.java文件，并将内容全部输出到控制台
 * 
 * 例如将当前项目目录下src/main/java/io目录中的所有java文件内容输出
 * 到控制台
 *
 * 1:先要定位./src/main/java/io目录(哪个API用来描述目录?)
 * 2:获取该目录下的所有.java文件
 * 3:遍历每一个java文件，然后按行读取里面的每一行字符串
 *   并输出控制台
 *  
 *   注意，流用完了要关闭，可以用autocloseable特性
 * 
 * 
 * @author Xiloer
 *
 */
public class Test03 {
    public static void main(String[] args) throws IOException {
        //获取目录下的文本文件(".java"结尾)
        File dir = new File("./src/main/java/io");
        if(dir.isDirectory()){
            //定义一个文件过滤器
            FileFilter filter = new FileFilter() {
                /*
                    实现FileFilter接口后必须重写accept方法
                    该方法用来定义过滤规则,将参数file作为过滤残障无
                    如果返回true,表示符合过滤要求
                 */
                @Override
                public boolean accept(File pathname) {
                    String name = pathname.getName();
                    boolean endWith = name.endsWith(".java");
                    return endWith&&pathname.isFile();
                }
            };
            File[] sub =dir.listFiles(filter);

            System.out.println("符合条件的文件有"+sub.length+"个");

            for (int i = 0; i <sub.length ; i++) {
                File subb = sub[i];
                System.out.println("第"+(i+1)+"个文件是"+subb.getName());

                FileInputStream fis = new FileInputStream(subb);
                InputStreamReader isr = new InputStreamReader(fis);
                BufferedReader br = new BufferedReader(isr);
                String line;

                while ((line = br.readLine())!=null){
                    System.out.println(line);
                }

                br.close();
            }

        }
    }
}
